﻿using System;
using System.Data;
using System.Text.RegularExpressions;
using System.Configuration;
using System.Collections;
using System.Collections.Generic;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using DataInfo;
using KenLib.BusinessManager;
using System.Drawing;
using XBLib.Dal.AdoDal;


public partial class JOINT_frmJ_TraineeGroupInput : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        ((JOINT_MstPage_JOINT)this.Master).ChangeMenu("入学実習生一覧", "frmJ_TraineeEnterSchoolSearch.aspx");
        ((JOINT_MstPage_JOINT)this.Master).changeTitle("入学情報（共通情報）登録");

        if (Session["frmJ_TraineeEnterSchoolSearch_ddl_グループID"] == null)
        {
            Response.Redirect("frmJ_TraineeEnterSchoolSearch.aspx");
        }
        else if (Session["frmJ_TraineeEnterSchoolSearch_ddl_グループID"].ToString() == "-1")
        {
            Response.Redirect("frmJ_TraineeEnterSchoolSearch.aspx");
        }

        txt_入学予定日.Focus();

        if (!IsPostBack)
        {
            bind上陸港();

            string ER00001 = GetError("ER00001");
            string ER00005 = GetError("ER00005");
            string ER00006 = GetError("ER00006");
            string ER00007 = GetError("ER00007");

            CustomValidator入学予定日.ErrorMessage = ER00005;
            CustomValidator入学予定日1.ErrorMessage = ER00006;
            RequiredFieldValidator入学予定日.ErrorMessage = ER00001;
            CustomValidator卒業予定日.ErrorMessage = ER00005;
            CustomValidator卒業予定日1.ErrorMessage = ER00006;
            RequiredFieldValidator卒業予定日.ErrorMessage = ER00001;
            CustomValidator卒業予定日2.ErrorMessage = ER00005;
            CustomValidator入学日.ErrorMessage = ER00005;
            CustomValidator入学日1.ErrorMessage = ER00006;
            CustomValidator卒業日.ErrorMessage = ER00005;
            CustomValidator卒業日1.ErrorMessage = ER00006;
            CustomValidator入国予定年月日.ErrorMessage = ER00005;
            CustomValidator入国予定年月日1.ErrorMessage = ER00006;
            RequiredFieldValidator入国予定年月日.ErrorMessage = ER00001;
            CustomValidator入国年月日.ErrorMessage = ER00005;
            CustomValidator入国年月日1.ErrorMessage = ER00006;
            RequiredFieldValidator上陸港.ErrorMessage = ER00007;
            RequiredFieldValidator犯罪理由処分.ErrorMessage = ER00007;
            RequiredFieldValidator強制退去出国.ErrorMessage = ER00007;
            CustomValidator強制退去出国回数.ErrorMessage = GetError("ER00002");
            CustomValidator強制退去出国送還歴.ErrorMessage = ER00006;
            RequiredFieldValidator保証金徴収.ErrorMessage = ER00007;

            int グループID = Int32.Parse(Session["frmJ_TraineeEnterSchoolSearch_ddl_グループID"].ToString());
            入国ＧManager frm_入国Ｇ = new 入国ＧManager();
            DataTable dt_入国Ｇ = frm_入国Ｇ.Get_入国Ｇ名(グループID);
            lbl_グループ名.Text = dt_入国Ｇ.Rows[0]["入国Ｇ名"].ToString();

            基本情報Manager frm_基本情報 = new 基本情報Manager();
            DataTable dt = frm_基本情報.Select_Exists_入学情報(グループID);
            if (dt.Rows.Count > 0)
            {
                Session["mode_active"] = "update";

                txt_入学予定日.Text = DateTime.Parse(dt.Rows[0]["入学予定日"].ToString()).ToString("yyyy/MM/dd");
                txt_卒業予定日.Text = dt.Rows[0]["卒業予定日"].ToString() != "" ? DateTime.Parse(dt.Rows[0]["卒業予定日"].ToString()).ToString("yyyy/MM/dd") : "";
                txt_入学日.Text = dt.Rows[0]["入学日"].ToString() != "" ? DateTime.Parse(dt.Rows[0]["入学日"].ToString()).ToString("yyyy/MM/dd") : "";
                txt_卒業日.Text = dt.Rows[0]["卒業日"].ToString() != "" ? DateTime.Parse(dt.Rows[0]["卒業日"].ToString()).ToString("yyyy/MM/dd") : "";
                txt_入国予定年月日.Text = DateTime.Parse(dt.Rows[0]["入国予定年月日"].ToString()).ToString("yyyy/MM/dd");
                txt_入国年月日.Text = dt.Rows[0]["入国年月日"].ToString() != "" ? DateTime.Parse(dt.Rows[0]["入国年月日"].ToString()).ToString("yyyy/MM/dd") : "";
                txt_入国特記事項.Text = HttpUtility.HtmlDecode(dt.Rows[0]["入国特記事項"].ToString());
                ddl_上陸港.SelectedValue = dt.Rows[0]["上陸港"].ToString();
                ddl_犯罪理由処分.SelectedValue = Boolean.Parse(dt.Rows[0]["犯罪理由処分"].ToString()) == true ? "1" : "0";
                ddl_強制退去出国.SelectedValue = Boolean.Parse(dt.Rows[0]["強制退去出国"].ToString()) == true ? "1" : "0";
                txt_強制退去出国回数.Text = dt.Rows[0]["強制退去出国回数"].ToString();
                txt_強制退去出国送還歴.Text = dt.Rows[0]["強制退去出国送還歴"].ToString() != "" ? DateTime.Parse(dt.Rows[0]["強制退去出国送還歴"].ToString()).ToString("yyyy/MM/dd") : "";
                ddl_保証金徴収.SelectedValue = Boolean.Parse(dt.Rows[0]["保証金徴収"].ToString()) == true ? "1" : "0";
                txt_保証金徴収管理機関.Text = HttpUtility.HtmlDecode(dt.Rows[0]["保証金徴収管理機関"].ToString());
                txt_保証金徴収財産.Text = HttpUtility.HtmlDecode(dt.Rows[0]["保証金徴収財産"].ToString());
            }
            else{
                Session["mode_active"] = "insert";
            }
        }
    }
    protected void btn確認_Click(object sender, EventArgs e)
    {
        //int 社員ID = 5;// Int32.Parse(Session["社員ID"].ToString());

        SetValueForControl();

        雇用情報 obj_雇用情報 = new 雇用情報();
        obj_雇用情報.発令開始日 = DateTime.Parse(txt_入学予定日.Text);
        obj_雇用情報.発令終了日 = DateTime.Parse(txt_卒業予定日.Text);
        if (txt_入学日.Text.Length > 0) { obj_雇用情報.実際開始日 = DateTime.Parse(txt_入学日.Text); }
        if (txt_卒業日.Text.Length > 0) { obj_雇用情報.実際終了日 = DateTime.Parse(txt_卒業日.Text); }
        obj_雇用情報.廃止区分 = 0;
        //obj_雇用情報.社員ID = 社員ID;

        出入国歴情報 obj_出入国歴情報 = new 出入国歴情報();
        obj_出入国歴情報.入国予定年月日 = DateTime.Parse(txt_入国予定年月日.Text);
        if (txt_入国年月日.Text.Length > 0) { obj_出入国歴情報.入国年月日 = DateTime.Parse(txt_入国年月日.Text); }
        obj_出入国歴情報.入国特記事項 = txt_入国特記事項.Text.Trim();
        obj_出入国歴情報.上陸港 = Int32.Parse(ddl_上陸港.SelectedValue);
		obj_出入国歴情報.上陸港_NAME = ddl_上陸港.SelectedItem.ToString();
        obj_出入国歴情報.廃止区分 = 0;
        //obj_出入国歴情報.社員ID = 社員ID;

        入国Ｇ obj_入国Ｇ = new 入国Ｇ();
        obj_入国Ｇ.入国予定日 = DateTime.Parse(txt_入国予定年月日.Text);
        if (txt_入国年月日.Text.Length > 0) { obj_入国Ｇ.入国日 = DateTime.Parse(txt_入国年月日.Text); }
        
        実習生選択情報 obj_実習生選択情報 = new 実習生選択情報();
        obj_実習生選択情報.犯罪理由処分 = Int32.Parse(ddl_犯罪理由処分 .SelectedValue); 
        obj_実習生選択情報.強制退去出国 = ddl_強制退去出国.SelectedValue != "1" ? false : true;
        if (txt_強制退去出国回数.Text.Length > 0) { obj_実習生選択情報.強制退去出国回数 = Int32.Parse(txt_強制退去出国回数.Text.Replace(",", "")); }
        if (txt_強制退去出国送還歴.Text.Length > 0) { obj_実習生選択情報.強制退去出国送還歴 = DateTime.Parse(txt_強制退去出国送還歴.Text); }
        obj_実習生選択情報.保証金徴収 = ddl_保証金徴収.SelectedValue != "1" ? false : true;
        obj_実習生選択情報.保証金徴収管理機関 = txt_保証金徴収管理機関.Text.Trim();
        obj_実習生選択情報.保証金徴収財産 = txt_保証金徴収財産.Text.Trim();

        Session["雇用情報"] = obj_雇用情報;
        Session["出入国歴情報"] = obj_出入国歴情報;
        Session["実習生選択情報"] = obj_実習生選択情報;
        Session["入国Ｇ"] = obj_入国Ｇ;

        Response.Redirect("frmJ_TraineeGroupCheck.aspx");
    }
    protected void bind上陸港() 
    { 
        try
        {
            出入国歴情報Manager frm = new 出入国歴情報Manager();
            DataTable dt = frm.Select上陸港();
            ddl_上陸港.DataSource = dt;
            ddl_上陸港.DataTextField = "上陸港名";
            ddl_上陸港.DataValueField = "ID";
            ddl_上陸港.DataBind();

            ListItem 選択 = new ListItem("[選択]", "-1");
            ddl_上陸港.Items.Insert(0, 選択);
        }
        catch(Exception ex) {
            Response.Write(ex.Message);
        }
    }
    public static Control[] FlattenHierachy(Control root)
    {
        List<Control> list = new List<Control>();
        list.Add(root);
        if (root.HasControls())
        {
            foreach (Control control in root.Controls)
            {
                list.AddRange(FlattenHierachy(control));
            }
        }
        return list.ToArray();
    }
    protected void SetValueForControl()
    {
        Control[] allControls = FlattenHierachy(Page);
        foreach (Control control in allControls)
        {
            TextBox textBox = control as TextBox;
            if (textBox != null)
            {
                 textBox.Text = textBox.Text.Replace("<", "&lt;");
                 textBox.Text = textBox.Text.Replace(">", "&gt;");
            }
        }
    }
    public String GetError(string errorid)
    {
        string error = "";
        Error er = new Error();
        er.ErrorID = errorid;
        ErrorManager frm_error = new ErrorManager();
        DataTable dt = frm_error.getError(er);
        if (dt.Rows.Count > 0)
            error = dt.Rows[0][2].ToString();
        return error;
    }
}
